Fork me on GitHub

排序算法的实现(冒泡,选择,插入 O(N*N)--理解方法实现

 

以前也看过很多排序算法的原理,每次都想自己实现一下,一直都再拖,现在着牛课网学习算法课程,希望自己能够坚持练习。

//对于一个int数组,请编写一个选择冒泡算法,对数组元素排序。
//给定一个int数组A及数组的大小n,请返回排序后的数组。
//测试样例:
//[1, 2, 3, 5, 2, 3], 6
//[1, 2, 2, 3, 3, 5]


#include <iostream> 
using namespace std;
#include<string>



void printResult(string str,int* A,int n)
{
    cout << str << "的结果:\n";
    for (int i = 0; i < n; i++)
    {
        cout << A[i] <<" ";
    }
    cout << endl;
}

void swap(int a, int b)
{
    int temp=a;
    a = b;
    b = a;
}

class BubbleSort {
public:
    int* bubbleSort(int* A, int n) {
        // write code here
        for (int i = 0; i<n; i++)
        {
            for (int j = 0; j<n - i - 1; j++)
            {
                if (A[j]>A[j + 1])
                {
                    int temp = A[j];
                    A[j] = A[j + 1];
                    A[j + 1] = temp;
                }
            }
        }
        return A;
    }
};


//请编写一个选择排序算法
class SelectionSort {
public:
    int* selectionSort(int* A, int n) {
        // write code here
        int k = 0;
        for (int i = 0; i < n-1; i++)
        {
            k = i;
            for (int j = i; j < n; j++)
            {
                if (A[k]>A[j])
                {
                    k = j;
                }
            }
            if (k!=i)
            {
                int temp = A[i];
                A[i] = A[k];
                A[k] = temp;
            }
        }
        return A;
    }
};

//请编写一个选择插入算法

class InsertionSort
{
public:
    int* insertionSort(int* A, int n)
    {
        for (int i = 1; i < n; i++)
        {
            int temp = A[i];
            int j = i - 1;
            for (; j >= 0;j--)   //j前面的已经排好序,从后面往前比较,当没有比当前值大的时候bereak;
            {
                if (A[j]>temp)
                {
                    A[j + 1] = A[j];
                }
                else
                {
                    break;
                }
            }
            A[j + 1] = temp;
        }
        return A;
    }
};


int main()
{

    int N = 0;
    cout << "排序数据个数:\n";
    cin >> N;
    int* A = new int[N];
    cout << "请输入待排序的数据:\n";
    for (int i = 0; i < N; i++)
    {
        cin >> A[i];
    }

    BubbleSort bubble;
    bubble.bubbleSort(A,N);
    printResult("bubbleSort", A, N);

    SelectionSort select;
    select.selectionSort(A, N);
    printResult("selectSort", A, N);

    InsertionSort insert;
    insert.insertionSort(A, N);
    printResult("InsetSort", A, N);


    return 0;
}

 

 

持续更新中......

 

posted @ 2016-09-25 21:15  ranjiewen  阅读(395)  评论(0编辑  收藏  举报